Redis数据结构与基本命令
--
Redis提供的5种数据结构
数据类型 | 存储的值 | 读写能力 |
---|---|---|
STRING | 字符串、整数、浮点数 | 对整个字符串或者字符串的其中一部分执行操作; 对整数和浮点数执行自增(increment)或者自减(decrement)操作 |
LIST | 链表,链表上的每个节点都包含了一个字符串 | 从链表的两端推入或者弹出元素; 根据偏移量对链表进行修建(teim); 读取单个或者多个元素; 根据值查找或者移除元素 |
SET | 包含字符串的无序集合,并且被包含的每个字符串都是独一无二、各不相同的 | 添加、获取、移除单个元素; 检查一个元素是否存在于集合中; 集合运算(交、并、差); 从集合里面获取元素 |
HASH | 包含键值对的无序散列表 | 添加、获取、移除单个键值对; 获取所有键值对 |
ZSET | 有序集合,字符串成员(member)与浮点数分值(score)之间的有序映射,元素的排列顺序由分值的大小决定 | 添加、获取、移除单个元素; 根据分值范围(range)或者成员来获取元素 |
字符串命令
命令 | 用例 | 描述 |
---|---|---|
GET | GET keyName value | 获取存储在键中的值 |
SET | SET keyName value | 设置存储在键中的值 |
DEL | DEL keyName | 删除存储在键中的值 |
INCR | INCR keyName | 将键当前存储的值加1 |
DECR | DECR keyName | 将键当前存储的值减1 |
INCRBY | INCRBY keyName amount | 将键当前存储的值加上给定的整数值 |
DECRBY | DECRBY keyName amount | 将键当前存储的值加上给定的整数值 |
INCRBYFLOAT | INCRBYFLOAT keyName amount | 将键当前存储的值加上给定的浮点数 |
APPEND | APPEND keyName value | 将值追加到键当前存储值的末尾 |
GETRANGE | GETRANGE keyName start end | 获取一个由偏移量start至end范围内所有字符组成的子串,包括start和end |
SETRANGE | SETRANGE keyName offset value | 将从start偏移量开始的子串为给定值 |
GETBIT | GEIBIT keyName offset | 将字节串看做是二进制位串(bit string),并返回位串中偏移量为offset的二进制位的值 |
SETBIT | SETBIT keyName offset value | 将字节串看做是二进制串,并将位串中偏移量为offset的二进制位的值设置位value |
BITOP | BIPOP operationg destKey keyName [keyName...] | 对一个或多个二进制位串执行位运算(并、或、异或、非),并将结果保存在destKey中 |
列表命令
命令 | 用例 | 描述 |
---|---|---|
RPUSH | RPUSH listName value [value...] | 将一个或多个值推入列表左端 |
LPUSH | LPUSH listName value [value...] | 将一个或多个值推入列表右端 |
RPOP | RPOP listName | 移除并返回列表最左端元素 |
LPOP | LPOP listName | 移除并返回列表最右端元素 |
LINDEX | LINDEX listName offset | 返回列表中偏移量为offset的元素 |
LRANGE | LRANGE listName start end | 返回列表中偏移量从start至end范围内的所有元素,包括start和end |
LTRIM | LTRIM listName start end | 队列表进行切片,只保留偏移量从start至end范围内的所有元素,包括start和end |
BLPOP | BLPOP listName [listName...] timeout | 从第一个非空列表中弹出位于最左端的元素,或者在timeout秒之内阻塞并等待可弹出的元素出现 |
BRPOP | BRPOP listName [listName...] timeout | 从第一个非空列表中弹出位于最右端的元素,或者在timeout秒之内阻塞并等待可弹出的元素出现 |
RPOPLPUSH | RPOPLPUSH sourceList destList | 从sourceList中弹出位于最右端的元素,然后将这个元素推入destList的最左端,并返回这个这个元素 |
BRPOPLPUSH | BRPOPLPUSH sourceList destList timeout | 从sourceList中弹出位于最右端的元素,然后将这个元素推入destList的最左端,并返回这个元素;如果sourceList为空,那么在timeout秒之内阻塞并等待可弹出的元素出现 |
集合命令
命令 | 用例 | 描述 |
---|---|---|
SADD | SADD setName item [item...] | 将一个或多个元素添加到集合中,并返回被添加的元素中原本不存在于集合里面的元素数量 |
SREM | SREM setName item [item...] | 从集合里面移除一个或多个元素,并返回被移除元素的数量 |
SISMEMBER | SISMEMBER setName item | 检查元素是否存在于集合里 |
SCARD | SCARD setName | 返回集合包含的元素数量 |
SMEMBERS | SMEMBERS setName | 返回集合中包含的所有元素 |
SRANDMEMBER | SRANDMEMBER setName [count] | 从集合里面随机返回一个或多个元素;当count为正数时,命令返回的随机元素不会重复;当count为负数时,命令返回的随机元素可能会出现重复 |
SPOP | SPOP setName | 随机移除集合中的一个元素,返回被移除的元素 |
SMOVE | SMOVE sourceSet destSet item | 如果sourceSet包含元素item,那么从sourceSet里面移除元素item,将元素item添加到destSet中;如果item被移除成功,那么命令返回1,否则返回0 |
SDIFF | SDIFF setName [setName...] | 计算差集运算,返回计算结果 |
SDIFFSTORE | SDIFFSTORE destSet setName [setName...] | 计算差集运算,将结果存储在destSet里面 |
SINTER | SINTER setName [setName...] | 计算交集运算,返回计算结果 |
SINTERSTORE | SINTERSTORE destSet setName [setName...] | 计算交集运算,将结果存储在destSet里面 |
SUNION | SUNION setName [setName...] | 计算并集运算,返回计算结果 |
SUNIONSORE | SUNIONSORE destSet setName [setName...] | 计算并集运算,将结果存储在destSet里面 |
散列表命令
命令 | 用例 | 描述 |
---|---|---|
HMGET | HMGET hashName key [key...] | 从散列里面获取一个或多个键的值 |
HMSET | HMSET hashName key value [key value...] | 为散列里面一个或多个键设置值 |
HDEL | HDEL hashName key [key...] | 删除散列里面的一个或多个键值对,返回成功找到并删除的键值对数量 |
HLEN | HLEN hashName | 返回散列包含的键值对数量 |
HEXISTS | HEXISTS hashName key | 检查键是否存在于散列里面 |
HKEYS | HKEYS hashName | 获取散列包含的所有键 |
HVALS | HVALS hashName | 获取散列包含的所有值 |
HGETALL | HGETALL hashName | 获取散列包含的所有键值对 |
HINCRBY | HINCRBY hashName key increment | 将键存储的值加上整数increment |
HINCRBYFLOAT | HINCRBYFLOAT hashName key increment | 将键存储的值加上浮点数increment |
有序集命令
命令 | 用例 | 描述 |
---|---|---|
ZADD | ZADD zsetName score member [score member...] | 将带有给定分值的成员添加到有序集里面 |
ZREM | ZREM zsetName member [member...] | 从有序集里面移除一个或多个成员,并返回被移除成员的数量 |
ZCARD | ZCARD zsetName | 返回有序集包含的成员数量 |
ZINCRBY | ZINCRBY zsetName increment member | 将给定成员的分值加上increment |
ZCOUNT | ZCOUNT zsetName min max | 返回分值介于min和max之间的成员数量 |
ZRANK | ZRANK zsetName member | 返回成员在有序集中的排名 |
ZSCORE | ZSCORE zsetName member | 返回成员在有序集中的分值 |
ZRANGE | ZRANGE zsetName start stop [WITHSCORES] | 返回有序集中排名介于start和stop之间的成员,如果给定了可选的WITHSCORES选项,那么命令将成员的分值也一并返回 |
ZREVRANK | ZREVRANK zsetName member | 返回有序集里成员的排名,成员按照分值由大到小排列 |
ZREVRANGE | ZREVRANGE zsetName start stop [WITHSCORES] | 返回有序集里给定排名范围的成员,成员按照分值由大到小排列 |
ZRANGEBYSCORE | ZRANGEBYSCORE zsetName min max [WITHSCORES] [LIMIT offset count] | 返回有序集中,分值介于min和max之间的所有成员 |
ZREMRANGEBYRANK | ZREMRANGEBYRANK zsetName start stop | 移除有序集中排名介于start和stop之间的所有成员 |
ZREMRANGEBYSCORE | ZREMRANGEBYSCORE zsetName min max | 移除有序集中分值介于min和max之间的所有成员 |
ZINTERSTORE | ZINTERSTORE destZset zsetCount zset [zset...] [WEIGHTS weight [weight...]] [AGGREGATE SUM:MIN:MAX] | 计算交集运算,将结果存储在destSet里面 |
ZUNIONSTORE | ZUNIONSTORE destZset zsetCount zset [zset...] [WEIGHTS weight [weight...]] [AGGREGATE SUM:MIN:MAX] | 计算并集运算,将结果存储在destSet里面 |
其他命令
发布与订阅
命令 | 用例 | 描述 |
---|---|---|
SUBSCRIBE | SUBSCRIBE channel [channel...] | 订阅一个或多个频道 |
UNSUBSCRIBE | UNSUBSCRIBE channel [channel...] | 退订一个或多个频道,如果执行时没有指定任何频道,那么退订所有频道 |
PUBLISH | PUBLISH channel message | 给频道发送消息 |
PSUBSCRIBE | PSUBSCRIBE pattern [pattern...] | 订阅模式相匹配的所有频道 |
PUNSUBSCRIBE | PUNSUBSCRIBE pattern [pattern...] | 退订模式,如果执行时没有指定任何模式,那么退订所有模式 |
排序
命令 | 用例 | 描述 |
---|---|---|
SORT | SORT sourceKey [BY pattern] [LIMIT offset count] [GET pattern [GET pattern...]] [ASC:DESC] [ALPHA] [STORE destKey] | 根据给定的选项,对输入的列表、集合、或者有序集进行排序,然后返回或者存储排序的结果 |
过期时间
命令 | 用例 | 描述 |
---|---|---|
PERSIST | PERSIST keyName | 移除键的过期时间 |
TTL | TTL ketName | 查看键距离过期还剩多少秒 |
EXPIRE | EXPIRE keyName seconds | 给键设置过期时间, 单位为秒 |
EXPIREAT | EXPIREAT keyName timestamp | 给键设置过期时间戳 |
PTTL | PTTL keyName | 查看键距离过期还剩多少毫秒 |
PEXPIRE | PEXPIRE keyName milliseconds | 给键设置过期时间,单位为毫秒 |
PEXPIREAT | PEXPIREAT keyName timestampMilliseconds | 给键设置过期毫秒精度的时间戳 |
事务
命令 | 描述 |
---|---|
MULTI | 开始事务 |
EXEC | 结束事务 |
WATCH | |
UNWATCH |
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。